module NavigationHelpers
  def path_to(page_name)
    case page_name


    when /p[aá]gina (?:inicial|principal)/
      root_path

    when /p[aá]gina de listagem de funcion[aá]rios/
      funcionarios_path

    when /p[aá]gina de cadastro de funcion[aá]rio/
      new_funcionario_path

    when /p[aá]gina de detalhes do funcion[aá]rio de login "([^"]*)"/
      funcionario_path(Funcionario.find_by_login($1))

    when /p[aá]gina de listagem de projetos/
      projetos_path

    when /p[aá]gina de cria[cç][aã]o de projeto/
      new_projeto_path

    when /p[aá]gina de detalhes do projeto "([^"]*)"/
      projeto_path(Projeto.find_by_nome($1))

      # When everything else fails
    else
      begin
        page_name =~ /p[aá]gina d(a|e|o) (.*)/
        path_components = $1.split(/\s+/)
        self.send(path_components.push('path').join('_').to_sym)
      rescue Object => e
        raise "Não existe nenhum path para a página \"#{page_name}\".\n" +
          "Adicione o path no #{__FILE__}"
      end
    end
  end
end

World(NavigationHelpers)
